package com.Test;

import com.ssm.model.User;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import redis.clients.jedis.Jedis;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class TestRedis {

    public static void main(String[]args){
        Jedis jedis=
                new Jedis("127.0.0.1",6379);
        // 选择哪个库：
        jedis.select(0);
        jedis.set("sex","男");
//        jedis.
        String name = jedis.get("sex");


        System.out.println(name);
        // exists 判断key是否存在
        Boolean exists = jedis.exists("sex");

        System.out.println(exists);

        Long l2 = jedis.del("sex");
        System.out.println(l2);





    }

    //操作String的测试类
    @Test
    public void operateStr() throws Exception {

        Jedis jedis=new Jedis("127.0.0.1",6379);
        jedis.set("seaon","summer");
        String seaon = jedis.get("seaon");
        System.out.println(seaon);
        // 设置过期时间
        jedis.expire("seaon",10000);

        String seaon2 = jedis.get("seaon");
        System.out.println(seaon2);
        jedis.append("seaon", ",autumn");
//	     substr(key, start, end)：返回名称为key的string的value的子串
        String substr = jedis.substr("seaon", 1, 6);
        String seaon3 = jedis.get("seaon");
        System.out.println(seaon3);
        System.out.println(substr);

    }
    @Test
    public void testSet(){
        Jedis jedis=new Jedis("127.0.0.1",6379);
//        jedis.select(0)
        jedis.sadd("color","red","yellow","blue",
                "green");
//        Set<String> color = jedis.smembers("color");
//        for(String s:color){
//            System.out.println(s);
//        }
        //删除指定元素
//        jedis.srem("color", "yellow");
        //随机删除，并返回所删除的值
//        String spop = jedis.spop("color");
//        System.out.println(spop);
//        Set<String> color = jedis.smembers("color");
//        for(String s:color){
//            System.out.println(s);
//        }
        //获取名为key 长度
        Long scard = jedis.scard("color");
        System.out.println(scard);

    }

    @Test
    public void testList(){
        Jedis jedis=new Jedis("127.0.0.1",6379);
        // 第一种方式添加
        jedis.del("fruit");
        jedis.rpush("fruit", "apple", "bunana", "putao");
        //追加
        jedis.del("shucai");

        jedis.lpush("shucai","luobo","baicai","fanqie");
//        List<String> fruit = jedis.lrange("fruit", 0, -1);
//        for(String s:fruit){
//            System.out.println(s);
//        }
        //ltrim 保留0到1所有的元素
//        String ltrim = jedis.ltrim("shucai", 0, 1);
//        List<String> shucai = jedis.lrange("shucai", 0, 1);
//        for(String s:shucai){
//            System.out.println(s);
//        }
        //lpop 删除第一个元素
        jedis.lpop("fruit");
        //删除最后一个元素
        jedis.rpop("shucai");
        List<String> fruit = jedis.lrange("fruit", 0, -1);
        for(String s:fruit){
            System.out.println(s);
        }

        List<String> shucai = jedis.lrange("shucai", 0, -1);
        for(String s:shucai){
            System.out.println(s);
        }



    }


    @Test
    public void sortSet(){

        Jedis jedis=new Jedis("127.0.0.1",6379);

        jedis.zadd("name1",1,"jzd");
        jedis.zadd("name1",3,"wml");
        jedis.zadd("name1",2,"mzq");
//        jedis.del("name1");
        //返回元素所在的位置
//        Long zrank = jedis.zrank("name1", "jzd");
//        System.out.println(zrank);
//        Set<String> name = jedis.zrange("name1", 0, -1);
//        for(String s:name){
//            System.out.println(s);
//        }
        // 倒序
        Set<String> zrevrange = jedis.zrevrange("name1", 0, -1);
        for(String s:zrevrange){
            System.out.println(s);
        }
        jedis.close();
    }

    @Test
    public void testHash(){
        Jedis jedis=new Jedis("127.0.0.1",6379);
        //存储对象
        jedis.hset("Dog","sex","男");
//        String s = jedis.hget("Dog", "sex");
//        System.out.println(s);
//        Map<String, String> map = jedis.hgetAll("Dog");
//        for(String sf:strings){
//            Set<String> strings = map.keySet();
//           System.out.println(sf+map.get(sf));
//        }
//        Map<String, String> map2=new HashMap<String, String>();
//        map2.put("color","yellow");
//        jedis.hmset("Dog",map2);
//        String s = jedis.hget("Dog", "color");
//        System.out.println(s);
        List<String> list = jedis.hvals("Dog");
        for(String s:list){
            System.out.println(s);
        }
    }

    @Test
    public void testRedisTempleta(){

        ApplicationContext context = new ClassPathXmlApplicationContext("spring-redis.xml");
        RedisTemplate redisTemplate = context.getBean("redisTemplate", RedisTemplate.class);

        // stringRedisTemplate的操作
        // String读写
        redisTemplate.delete("k1");
        // 这个类可以对对象操作
        ValueOperations valueOperations = redisTemplate.opsForValue();
        redisTemplate.opsForValue().set("k1", new User());
        System.out.println(redisTemplate.opsForValue().get("k1"));
        System.out.println("==============");


    }





}
